;(function($){
/*set li position */	
function set_li_position(obj,opts){
var w = parseInt((Math.ceil(obj.width() / opts.minItems ) * 100 ) / obj.width());
$('li',obj).each(function(){
$(this).css({
width:w+'%'
});	
})
}
/*bind li click event */
function add_li_click_event(obj,opts){
var w = parseInt((Math.ceil(obj.width() / opts.minItems ) * 100 ) / obj.width());
//add_bottom_arrow;
var liArrow='<span class="li_arrow"></span>';
$('li',obj).eq(0).append(liArrow);
//$('.tab_header li>a:first',obj).css('color','#fff');
//$('.current').css({width:w+'%',height:$('li>a:first',obj).height()});
$('li',obj).bind(opts.changeMode,function(){
if( obj.currentIndex!= $('li',obj).index($(this))){
obj.currentIndex = $('li',obj).index($(this));
$('li span',obj).remove();
$('li a',obj).removeClass('on');
$(this).children('a').addClass('on');
$('.tab_content').eq(obj.currentIndex).addClass('current').siblings().removeClass('current');	
$(this).append(liArrow);
/* add callback*/
opts.callBack(obj.currentIndex);	
}
})
}
function getLeft(obj){
return parseInt(obj.css('left'));	
}
/***touchstart start**/	
function tab_touchstart_event(obj,opts){	
obj.bind('touchstart',function(event){
var touch = event.originalEvent.touches[0];	
obj.startLeft = getLeft(obj);
obj.startX = touch.pageX;	
obj.css({
'-webkit-transition-duration': '0'
});
obj.touchStartTime = new Date().getTime();	
})
}
/***touchmove start**/
function tab_touchmove_event(obj,opts){
obj.bind('touchmove',function(event){
var touch = event.originalEvent.touches[0];
obj.endX = touch.pageX;
if (!obj.sliding) {
obj.sliding = true;
}
if (obj.startX > obj.endX) {
/*
* 向左滑动
*/
obj.css('left', '-' + (obj.startX - obj.endX - obj.startLeft) + 'px');
obj.slidingLeft = true;
} else {
/*
* 向右滑动
*/
var left = (obj.endX - obj.startX + obj.startLeft);
obj.css('left', left + 'px');
obj.slidingLeft = false;
}
})	
}
/***touchend start**/
function tab_touchend_event(obj,opts){	
obj.bind('touchend',function(event){
var moveX = getLeft(obj);
obj.colWidth = $("li a",obj).width();
obj.objW = $("li a",obj).length*obj.colWidth;
obj.parentW=obj.parent().width();
var marginW=obj.parentW-obj.colWidth*opts.minItems;	
if(moveX > 0){
doSlide(obj, 0, '0.5s');
obj.startX = null;
}else if((Math.abs(moveX) + obj.parentW) > obj.objW){
doSlide(obj, '-' + (obj.objW - obj.parentW), '0.5s');
obj.startX = null;
}else if(obj.parentW > obj.objW){
doSlide(obj, 0, '0.5s');
obj.startX = null;
}else{
slideTimer(obj, event);
}
$('.panel_header').html(moveX+','+obj.objW+','+obj.parentW);
})	
}
/***touchend end**/
//doSlide
function doSlide(obj, scrollX, duration) {
obj.css({
left: scrollX + 'px',
'-webkit-transition-property': 'left',
'-webkit-transition-duration': duration
});
}
function slideTimer(obj, event) {
var slideAdjust = (new Date().getTime() - obj.touchStartTime) * 10;
var left = getLeft(obj);
/*
计算滑动速度
*/
var changeX = 6000 * (Math.abs(obj.startLeft) - Math.abs(left));
slideAdjust = Math.round(changeX / slideAdjust);
var newLeft = slideAdjust + left;
var t = newLeft % obj.colWidth;
/*
如果超过半个的宽度就走一个的宽度
*/
if ((Math.abs(t)) > ((obj.colWidth / 2))) {
newLeft -= (obj.colWidth - Math.abs(t));
} else {
newLeft -= t;
}
if (obj.slidingLeft) {
var maxLeft = parseInt('-' + (obj.objW - obj.parentW), 10);
/*
* 向左滑动
*/
doSlide(obj, Math.max(maxLeft, newLeft), '0.8s');
} else {
/*
* 向右滑动
*/
doSlide(obj, Math.min(0, newLeft), '0.8s');
}
obj.startX = null;
}	
$.fn.lt_tab= function(options){
// 将defaults 和 options 参数合并到{}
var opts = $.extend({},$.fn.lt_tab.defaults,options);
return this.each(function(){	
var obj = $(this);
var currentIndex = $(obj).data('currentIndex',0);
var startLeft = $(obj).data('startLeft',0);
var startX = $(obj).data('startX',0);
var endX = $(obj).data('endX',0);
/*
* obj对象为当前调用该插件方法的对象。
* 而后面bind里面的clickIndex = $(".tab li", obj).index($(this));
* 意思就是obj对象下面的ul中的li元素索引index($(this))这里的$(this)则是在li元素中找到当前li元素的索引。
*/
// 设置li的位置
set_li_position(obj,opts);
//给li增加click事件，用于tab切换
add_li_click_event(obj,opts);
//tab滑动事件
tab_touchstart_event(obj,opts);
tab_touchmove_event(obj,opts);	
tab_touchend_event(obj,opts);
});
/**each end**/
};
//定义默认
$.fn.lt_tab.defaults = {
minItems:4,
changeMode : 'click',
callBack:function(){	
}
};
})(Zepto);